package com.tjbank.cssys.web.controller;

import java.util.Date;
import java.util.List;
import java.util.UUID;

import com.tjbank.cssys.web.config.GetUserCodeFromToken;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.tjbank.cssys.framework.base.api.BaseController;
import com.tjbank.cssys.framework.base.api.Response;
import com.tjbank.cssys.api.TenantService;
import com.tjbank.cssys.dto.TenanDTO;
import com.tjbank.cssys.dto.TenantDTO;
import com.tjbank.cssys.dto.TenantDetailsDTO;

import javax.servlet.http.HttpServletRequest;

/**
 * @menu: /租户管理
 * @author -- lijiangtao 2020年5月7日 下午5:35:16
 */
@RestController
@SuppressWarnings("unchecked")
public class TenantController extends BaseController {

    @Autowired
    private TenantService tenantService;
    private static Logger logger = LoggerFactory.getLogger(TenantController.class);
    /**
     * 新增租户
     * 
     * @param tenanDTO
     * @return
     * @status done 
     * @author -- lijiangtao 2020年5月9日 下午12:27:19
     */
    @PostMapping("/tenant")
    public Response<Integer> addTenan(@RequestBody TenantDTO tenantDTO , HttpServletRequest request) {

        return this.success(tenantService.addTenant(tenantDTO));
    }

    /**
     * 分页查询租户信息
     * 
     * @param tenantDTO
     * @param pageable
     * @return
     * @status done 
     * @author -- lijiangtao 2020年5月7日 下午2:12:04
     */
    @GetMapping("/tenant")
    public Response<Page<TenantDTO>> queryTenant(TenantDTO tenantDTO, Pageable pageable ,HttpServletRequest request) {

        return this.success(tenantService.queryTenant(tenantDTO, pageable));
    }

    /**
     * 编辑租户
     * 
     * @param tenantDTO
     * @return
     * @status done 
     * @author -- lijiangtao 2020年5月9日 下午2:57:10
     */
    @PutMapping("/tenant")
    public Response<Integer> updateTenant(@RequestBody TenantDTO tenantDTO ,HttpServletRequest request) {

        return this.success(tenantService.updateTenant(tenantDTO));
    }

    /**
     * 选择租户
     * 
     * @param tenantCode
     * @return
     * @status done 
     * @author -- lijiangtao 2020年7月22日 下午12:37:44
     */
    @GetMapping("/tenant/queryTenant")
    public Response<List<TenanDTO>> queryTenant(String tenantCode ,HttpServletRequest request) {

        return this.success(tenantService.queryTenant(tenantCode));
    }

    /**
     * 根据租户Code查询
     * 
     * @param tenantCode
     * @return
     * @status done 
     * @author -- lijiangtao 2020年7月26日 下午12:51:45
     */
    @GetMapping("/tenant/{tenantCode}")
    public Response<TenantDetailsDTO> queryObjByTenantCode(@PathVariable String tenantCode ,HttpServletRequest request) {

        return this.success(tenantService.queryObjByTenantCode(tenantCode));
    }
}
